﻿/************************************************************************
 * SMLib - State Model Library
 * Copyright (C) 2012-2013 Ali Khalili (khalili_DOT_ir_@SIGN_gmail_DOT_com)
 * **********************************************************************
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License (LGPL) published 
 * by the Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version. This program is distributed without any
 * warranty. See the GNU Lesser General Public License for more details. 
 * ***********************************************************************
 * File         :     SMLib\Interoperability\IExImHelper.cs
 * Description  :     Input-Output helper
 * Change log   :     
 * To Do        :     it is not COMPLETE!!
 ************************************************************************/
using System;
using System.Collections.Generic;
using SMLib.Base;

namespace SMLib.Interoperability
{
    /// <summary>
    /// 
    /// </summary>
    public interface IExImHelper<STATETYPE, TRANSITIONTYPE>
    {
        /// <summary>
        /// Convert a state into string
        /// </summary>
        /// <param name="state">the state</param>
        /// <returns>corresponding string value</returns>
        string StringOf(STATETYPE state);

        /// <summary>
        /// Convert an edge into string value
        /// </summary>
        /// <param name="tr"></param>
        /// <returns></returns>
        string StringOf(TRANSITIONTYPE tr);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tr"></param>
        /// <returns></returns>
        TRANSITIONTYPE ParseEdge(string tr);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="st"></param>
        /// <returns></returns>
        STATETYPE ParseState(string st);
    }
}
